<?xml version="1.0" encoding="UTF-8" ?>
<class name="Physics2DDirectSpaceState" inherits="Object" category="Core" version="3.0.alpha.custom_build">
	<brief_description>
		Direct access object to a space in the [Physics2DServer].
	</brief_description>
	<description>
		Direct access object to a space in the [Physics2DServer]. It's used mainly to do queries against objects and areas residing in a given space.
	</description>
	<tutorials>
	</tutorials>
	<demos>
	</demos>
	<methods>
		<method name="cast_motion">
			<return type="Array">
			</return>
			<argument index="0" name="shape" type="Physics2DShapeQueryParameters">
			</argument>
			<description>
				Check whether the shape can travel to a point. If it can, the method will return an array with two floats: The first is the distance the shape can move in that direction without colliding, and the second is the distance at which it will collide.
	If the shape can not move, the array will be empty.
			</description>
		</method>
		<method name="collide_shape">
			<return type="Array">
			</return>
			<argument index="0" name="shape" type="Physics2DShapeQueryParameters">
			</argument>
			<argument index="1" name="max_results" type="int" default="32">
			</argument>
			<description>
				Check the intersections of a shape, given through a [Physics2DShapeQueryParameters] object, against the space. The resulting array contains a list of points where the shape intersects another. Like with [method intersect_shape], the number of returned results can be limited to save processing time.
			</description>
		</method>
		<method name="get_rest_info">
			<return type="Dictionary">
			</return>
			<argument index="0" name="shape" type="Physics2DShapeQueryParameters">
			</argument>
			<description>
				Check the intersections of a shape, given through a [Physics2DShapeQueryParameters] object, against the space. If it collides with more than a shape, the nearest one is selected. The returned object is a dictionary containing the following fields:
				pointo: Place where the shapes intersect.
				normal: Normal of the object at the point where the shapes intersect.
				shape: Shape index within the object against which the shape intersected.
				metadata: Metadata of the shape against which the shape intersected. This metadata is different from [method Object.get_meta], and is set with [method Physics2DServer.shape_set_data].
				collider_id: Id of the object against which the shape intersected.
				collider: Object against which the shape intersected.
				rid: [RID] of the object against which the shape intersected.
				linear_velocity: The movement vector of the object the shape intersected, if it was a body. If it was an area, it is (0,0).
				If the shape did not intersect anything, then an empty dictionary (dir.empty()==true) is returned instead.
			</description>
		</method>
		<method name="intersect_point">
			<return type="Array">
			</return>
			<argument index="0" name="point" type="Vector2">
			</argument>
			<argument index="1" name="max_results" type="int" default="32">
			</argument>
			<argument index="2" name="exclude" type="Array" default="[  ]">
			</argument>
			<argument index="3" name="collision_layer" type="int" default="2147483647">
			</argument>
			<argument index="4" name="type_mask" type="int" default="15">
			</argument>
			<description>
				Check whether a point is inside any shape. The shapes the point is inside of are returned in an array containing dictionaries with the following fields:
				shape: Shape index within the object the point is in.
				metadata: Metadata of the shape the point is in. This metadata is different from [method Object.get_meta], and is set with [method Physics2DServer.shape_set_data].
				collider_id: Id of the object the point is in.
				collider: Object the point is inside of.
				rid: [RID] of the object the point is in.
				Additionally, the method can take an array of objects or [RID]s that are to be excluded from collisions, a bitmask representing the physics layers to check in, and another bitmask for the types of objects to check (see TYPE_MASK_* constants).
			</description>
		</method>
		<method name="intersect_ray">
			<return type="Dictionary">
			</return>
			<argument index="0" name="from" type="Vector2">
			</argument>
			<argument index="1" name="to" type="Vector2">
			</argument>
			<argument index="2" name="exclude" type="Array" default="[  ]">
			</argument>
			<argument index="3" name="collision_layer" type="int" default="2147483647">
			</argument>
			<argument index="4" name="type_mask" type="int" default="15">
			</argument>
			<description>
				Intersect a ray in a given space. The returned object is a dictionary with the following fields:
				position: Place where ray is stopped.
				normal: Normal of the object at the point where the ray was stopped.
				shape: Shape index within the object against which the ray was stopped.
				metadata: Metadata of the shape against which the ray was stopped. This metadata is different from [method Object.get_meta], and is set with [method Physics2DServer.shape_set_data].
				collider_id: Id of the object against which the ray was stopped.
				collider: Object against which the ray was stopped.
				rid: [RID] of the object against which the ray was stopped.
				If the ray did not intersect anything, then an empty dictionary (dir.empty()==true) is returned instead.
				Additionally, the method can take an array of objects or [RID]s that are to be excluded from collisions, a bitmask representing the physics layers to check in, and another bitmask for the types of objects to check (see TYPE_MASK_* constants).
			</description>
		</method>
		<method name="intersect_shape">
			<return type="Array">
			</return>
			<argument index="0" name="shape" type="Physics2DShapeQueryParameters">
			</argument>
			<argument index="1" name="max_results" type="int" default="32">
			</argument>
			<description>
				Check the intersections of a shape, given through a [Physics2DShapeQueryParameters] object, against the space. The intersected shapes are returned in an array containing dictionaries with the following fields:
				shape: Shape index within the object the shape intersected.
				metadata: Metadata of the shape intersected by the shape given through the [Physics2DShapeQueryParameters]. This metadata is different from [method Object.get_meta], and is set with [method Physics2DServer.shape_set_data].
				collider_id: Id of the object the shape intersected.
				collider: Object the shape intersected.
				rid: [RID] of the object the shape intersected.
				The number of intersections can be limited with the second parameter, to reduce the processing time.
			</description>
		</method>
	</methods>
	<constants>
		<constant name="TYPE_MASK_STATIC_BODY" value="1">
			Check for collisions with static bodies.
		</constant>
		<constant name="TYPE_MASK_KINEMATIC_BODY" value="2">
			Check for collisions with kinematic bodies.
		</constant>
		<constant name="TYPE_MASK_RIGID_BODY" value="4">
			Check for collisions with rigid bodies.
		</constant>
		<constant name="TYPE_MASK_CHARACTER_BODY" value="8">
			Check for collisions with rigid bodies in character mode.
		</constant>
		<constant name="TYPE_MASK_COLLISION" value="15">
			Check for collisions with any kind of bodies (but not areas).
		</constant>
		<constant name="TYPE_MASK_AREA" value="16">
			Check for collisions with areas.
		</constant>
	</constants>
</class>
